$(function() {
    back_to_top();
    SendSMSCode();
    UserNameExist();
    UserNameExistHiden();
    UserMobileExist();
    users_sign();
    update_time();
    UserPermission();
    LoginOout();

})

// 代码中许多注释是为了以后复用代码方便点

//* 回到顶部 */
function back_to_top() {
    var backButton=$('.back_to_top');
    function backToTop() {
        $('html,body').animate({
            scrollTop: 0
        }, 800);
    }
    backButton.on('click', backToTop);
 
    $(window).on('scroll', function () {/*当滚动条的垂直位置大于浏览器所能看到的页面的那部分的高度时，回到顶部按钮就显示 */
        if ($(window).scrollTop() > $(window).height())
            backButton.fadeIn();
        else
            backButton.fadeOut();
    });
    $(window).trigger('scroll');/*触发滚动事件，避免刷新的时候显示回到顶部按钮*/
}

// uuid
var imageCodeId = "";

// 生成一个图片验证码的编号，并设置页面中图片验证码img标签的src属性
function generateImageCode() {
    $('#phone_error_message').hide()

    // 1. 生成一个编号
    // 严格一点的使用uuid保证编号唯一， 不是很严谨的情况下，也可以使用时间戳
    imageCodeId = generateUUID();

    // 2. 拼接验证码地址
    var imageCodeUrl = host + '/image_codes/' + imageCodeId + '/';

    // 3. 设置页面中图片验证码img标签的src属性
    $(".get_pic_code").attr("src", imageCodeUrl)
}

// 生成UUID
function generateUUID() {
    var d = new Date().getTime();
    if(window.performance && typeof window.performance.now === "function"){
        d += performance.now(); //use high-precision timer if available
    }
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = (d + Math.random()*16)%16 | 0;
        d = Math.floor(d/16);
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);
    });
    return uuid;
}

// 发送短信
function SendSMSCode() {
    $('#send_SMS_code').click(function () {
        $('#pic_code_error_message').html('')
        var mobile = $('#input_phone').val();  //手机号
        var pic_code_text = $('#pic_code').val(); // 验证码
        var image_code_id = imageCodeId;  // UUID
        // console.log(mobile,pic_code_text, image_code_id)

        var params = {
            'mobile': mobile,
            'pic_code_text': pic_code_text,
            'image_code_id': image_code_id,
        };

        $.ajax({
            url: host + "/sms_codes/",
            method: "get",
            data: params,
            contentType: "application/json",
            xhrFields: {
                withCredentials: true
            },
            success: function (resp) {
                var sms_code = eval(resp)
                // alert('注册成功！')
                // alert("由于发短信要有费用因此短信验证码在这里显示:" + resp['message'])

                 // 发送成功后，进行倒计时
                var num = 60;
                var t = setInterval(function ()  {
                    if (num == 0) {
                        // 倒计时完成,清除定时器
                        clearInterval(t);         // 重新生成验证码
                        generateImageCode();
                        // 重置内容
                        $("#send_SMS_code").html('发送');
                        // 重新添加点击事件
                        // $(".get_code").attr("onclick", "sendSMSCode();");
                    } else {
                        // 正在倒计时，显示秒数
                        $("#send_SMS_code").html(num + '秒');
                    }
                    // 每一秒减一
                    num -= 1;
                }, 1000);


            },
            error: function (resp) {
                // $('#phone_error_message').show()
                resp_data = JSON.parse(resp.responseText);  // 可以取到错误信息
                if (resp_data.pic_code_text){
                    $('#pic_code_error_message').html(resp_data.pic_code_text)
                }if (resp_data.non_field_errors){
                    $('#pic_code_error_message').html(resp_data.non_field_errors)
                }
                console.log(resp_data)

            }
        })
    })
}

// 检测用户名是否存在
function UserNameExist() {
    $('#inputEmail').blur(function () {
        var username = $('#inputEmail').val()
        params = {
            'username': username,
        };

        $.ajax({
            url: host + "/get_user_name_exist/",
            method: "get",
            data: params,
            contentType: "application/json",
            xhrFields: {
                withCredentials: true
            },
            success: function (resp) {
                var res_data = eval(resp)
                if (res_data['count'] != 0){
                    $('#user_name_exist').show()
                }

            },
            error: function (resp) {
                alert('服务器异常,请重试！')
            }
        })

    })

}

// 检测用户名是否存在
function UserMobileExist() {
    $('#input_phone').blur(function () {
        var mobile = $('#input_phone').val()
        params = {
            'mobile': mobile,
        };

        $.ajax({
            url: host + "/get_user_mobile_exist/",
            method: "get",
            data: params,
            contentType: "application/json",
            xhrFields: {
                withCredentials: true
            },
            success: function (resp) {
                var res_data = eval(resp)
                if (res_data['count'] != 0){
                    $('#user_mobile_exist').show()
                }

            },
            error: function (resp) {
                alert('服务器异常,请重试！')
            }
        })

    })

}

// 输入框获得焦点取消提示字
function UserNameExistHiden() {
    $("#inputEmail, #input_phone").focus(function(){
        $("#user_name_exist, #user_mobile_exist").hide();
    });
}


// 注册提交内容
function users_sign() {
    $('#sign_button').click(function () {
        $('#user_name, #user_password, #user_password2, #user_mobile, #user_sms_code, #user_password3').html('')

        var user_name = $('#inputEmail').val();
        var sign_password1 = $('#inputPassword1').val();
        var sign_password2 = $('#inputPassword2').val();
        var user_mobile = $('#input_phone').val();
        var sms_code = $('#sms_code').val();
        var pic_code = $('#pic_code').val();

        if (sign_password1 != sign_password2){
            $('#user_password3').html('两次密码不一致！')
        }

        params = {
            'username': user_name,
            'password': sign_password1,
            'password2': sign_password2,
            'mobile': user_mobile,
            'sms_code': sms_code,
        };

        $.ajax({
            url: host + "/user_sign/",
            method: "post",
            data: JSON.stringify(params),
            contentType: "application/json",
            xhrFields: {
                withCredentials: true
            },
            success: function (resp) {
                var case_list = eval(resp);

                // 记录用户的登录状态 token
                sessionStorage.clear();
                localStorage.clear();
                localStorage.token = case_list.token;
                localStorage.username = case_list.username;
                localStorage.user_id = case_list.id;
                localStorage.nickname = case_list.nickname;
                localStorage.sex = case_list.sex;
                localStorage.email = case_list.email;
                localStorage.address = case_list.address;
                // console.log(localStorage.user_id, + '11' +localStorage.username, + '22' +localStorage.token)
                alert('注册成功！')
                location.href = './personal_center.html'

            },
            error: function (resp) {
                // alert('短信验证码错误！');
                resp_data = JSON.parse(resp.responseText);  // 可以取到错误信息
                if (resp_data.username){
                    $('#user_name').html(resp_data.username)
                }if (resp_data.password){
                    $('#user_password').html(resp_data.password)
                }if (resp_data.password2){
                    $('#user_password2').html(resp_data.password2)
                }if (resp_data.mobile){
                    $('#user_mobile').html(resp_data.mobile)
                }if (resp_data.sms_code){
                    $('#user_sms_code').html(resp_data.sms_code)
                }if (resp_data.non_field_errors){
                    $('#user_sms_code').html(resp_data.non_field_errors)
                }
                // console.log(resp_data)
            }
        })

    })
}

// 更新活跃时间
function update_time() {
    var user_name = localStorage.username || sessionStorage.username;
    var token = localStorage.token || sessionStorage.token;
    var params = {
        'username': user_name
    };
    if (token){
        $.ajax({
            url: host + "/update_time/",
            method: "put",
            data: JSON.stringify(params),
            contentType: "application/json",
            headers: {'Authorization': 'JWT ' + token},
            xhrFields: {
                withCredentials: true
            },
            success: function (resp) {

            },
            error: function (resp) {

            }
        })
    }

}

// 未登录状态 登陆状态 隐藏登陆 注册  展开个人中心
function UserPermission() {
    // console.log(localStorage.token, sessionStorage.token)
    if (localStorage.token == undefined && sessionStorage.token == undefined){
        // 未登录状态

    }else {
    //    登陆状态 隐藏登陆 注册  展开个人中心
        $('.user_login_in_hidden').css("display", "none")
        $('.user_login_on').css("display", "")
        $('.user_login_on_a').text(localStorage.username || sessionStorage.username).css('color', '#40D2B1')
        // console.log(localStorage.username,sessionStorage.username)
    }
}

function LoginOout() {
    $(".login_out").click(function () {
        sessionStorage.clear();
        localStorage.clear();
        location.reload()
    })
}
